package pl.edu.amu.kino.kardamon.midlet;

import java.util.Calendar;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;

/**
 *
 * @author Dolek
 */
class RozkladJazdyTable extends Canvas {

    public RozkladJazdyTable() {
        this.setTitle("Cardamon");
        linia = "";
        przystanek = "";
        dzien = 0;
    }

    protected void paint(Graphics g) {
        Vector[] godziny = {};
        g.setColor(255, 255, 255);
        g.fillRect(0, 25, this.getWidth(), getHeight());
        g.setColor(222, 237, 33);
        g.fillRect(0, 0, getWidth(), 25);
        g.drawLine(25, 25, 25, getHeight());
        g.setColor(0, 0, 0);
        g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
        g.drawString(linia, 5, 2, Graphics.TOP | Graphics.LEFT);
        g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL));
        String dzionek = new String();
        if (dzien == WEEK) {
            dzionek = "Dni powszednie";
            godziny = godzinyWeek;
        }
        if (dzien == SATURDAY) {
            dzionek = "Soboty";
            godziny = godzinySat;
        }
        if (dzien == SUNDAY) {
            dzionek = "Niedziele i święta";
            godziny = godzinySun;
        }
        g.drawString(dzionek, this.getWidth(), 0, Graphics.TOP | Graphics.RIGHT);
        g.drawString(przystanek, this.getWidth(), 10, Graphics.TOP | Graphics.RIGHT);
        g.clipRect(0, 25, this.getWidth(), this.getHeight());
        int i, j;
        boolean future = false;
        String hour = "";
        String minuty = "";
        int czasH = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
        int czasM = Calendar.getInstance().get(Calendar.MINUTE);
        for (i = 0, j = 0; godziny[i] != null; i++) {

            g.setColor(222, 237, 33);
            g.drawLine(0, pozycjaListyPocz + j, this.getWidth(), pozycjaListyPocz + j);
            g.setColor(0, 0, 0);

            if (Integer.parseInt((String) godziny[i].firstElement()) < 10) {
                hour = "0" + (String) godziny[i].firstElement();
            } else {
                hour = (String) godziny[i].firstElement();
            }
            g.drawString(hour, 3, pozycjaListyPocz + 1 + j, Graphics.TOP | Graphics.LEFT);
            for (int k = 1, l = 0; k < godziny[i].size(); k++, l += 25) {
                if (!future) {
                    if (((czasH == Integer.parseInt((String) godziny[i].firstElement()) && czasM <= Integer.parseInt((String) godziny[i].elementAt(k))))) {
                        g.setColor(222, 237, 33);
                        g.fillRect(30 + l - 1, pozycjaListyPocz + j + 1, 15, 18);
                        g.setColor(0, 0, 0);
                        future = true;
                    }
                }
                if (!future) {
                    if ((czasH < Integer.parseInt((String) godziny[i].firstElement()))) {
                        g.setColor(222, 237, 33);
                        g.fillRect(30 + l - 1, pozycjaListyPocz + j + 1, 18, 20);
                        g.setColor(0, 0, 0);
                        future = true;
                    }
                }
//                if (!future && ((czasH == Integer.parseInt((String) godziny[i].firstElement()) && czasM <= Integer.parseInt((String) godziny[i].elementAt(k)))
//                        || (czasH <  Integer.parseInt((String) godziny[i].firstElement()) ))) {
//                    
//                }
                if (Integer.parseInt((String) godziny[i].elementAt(k)) < 10) {
                    minuty = "0" + (String) godziny[i].elementAt(k);
                } else {
                    minuty = (String) godziny[i].elementAt(k);
                }

                g.drawString(minuty, 30 + l, pozycjaListyPocz + 1 + j, Graphics.TOP | Graphics.LEFT);
            }

            j += 20;

        }
        pozycjaListyKon = pozycjaListyPocz + j;
        pozycjaListySize = j - 20;
    }

    protected void keyPressed(int klawisz) {
        int key = getGameAction(klawisz);
        if (key == Canvas.LEFT) {
            dzien = (dzien + 3 - 1) % 3;
        }
        if (key == Canvas.RIGHT) {
            dzien = (dzien + 1) % 3;
        }
        if (key == Canvas.DOWN) {
            if (pozycjaListyKon <= getHeight()) {
                pozycjaListyPocz = 25;
            } else {
                pozycjaListyPocz -= 20;
                pozycjaListyKon -= 20;
            }
        }
        if (key == Canvas.UP) {
            if (pozycjaListyKon <= getHeight() && pozycjaListyPocz == 25) {
            } else if (pozycjaListyPocz >= 25) {
                pozycjaListyPocz = getHeight() - 25 - pozycjaListySize;
            } else {
                pozycjaListyPocz += 20;
                pozycjaListyKon += 20;
            }
        }
        this.repaint();
    }

    public void setLinia(String nazwaLinii) {
        linia = nazwaLinii;
    }

    public void setPrzystanek(String nazwaPrzystanku) {
        przystanek = nazwaPrzystanku;
    }

    public void setDzien(int dzien) {
        this.dzien = dzien;
    }

    public void setGodziny(Vector[] godzinyWeek, Vector[] godzinySaturday, Vector[] godzinySunday) {
        if (godzinyWeek != null) {
            this.godzinyWeek = godzinyWeek;
        }
        if (godzinySaturday != null) {
            this.godzinySat = godzinySaturday;
        }
        if (godzinySunday != null) {
            this.godzinySun = godzinySunday;
        }
    }

    public void zeruj() {
        pozycjaListyPocz = 25;
        pozycjaListyKon = 25;
        pozycjaListySize = 0;

    }
    private Vector[] godzinyWeek = {null};
    private Vector[] godzinySat = {null};
    private Vector[] godzinySun = {null};
    private String linia;
    private String przystanek;
    private int dzien;
    private int pozycjaListyPocz = 25;
    private int pozycjaListyKon = 25;
    private int pozycjaListySize = 0;
    public static final int WEEK = 0;
    public static final int SATURDAY = 1;
    public static final int SUNDAY = 2;
}
